home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / tifsl / tifsl.c next >
Text File  |  1993-07-08  |  3KB  |  130 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <winb.h>
  5. #include <te.h>
  6. #include <fntb.h>
  7. #include <gui.h>
  8. #include <file_dlg.h>
  9.  
  10. int
  11. GUI_ClassInit()
  12. {
  13.     int        ret;                    /* エラーコード                            */
  14.  
  15.     ret    = MMI_initHyper();            /* ハイパ                                */
  16.     ret |= MMI_initDialogL40();        /* ダイアログ                            */
  17.     ret |= MMI_initAlertL40();        /* アラート                                */
  18.     ret |= MMI_initMessageL40();    /* メッセージ                            */
  19.     ret |= MMI_initButtonL40();        /* ボタン                                */
  20.     ret |= MMI_initDrawButtonL40();    /* ドロウボタン                            */
  21.     ret |= MMI_initIconL40();        /* アイコン                                */
  22.     ret |= MMI_initToggleIconL40();    /* トグルボタン                            */
  23.     ret |= MMI_initScrollBarL40();    /* スクロールバー                            */
  24.     ret |= MMI_initTextL40();        /* テキスト                                */
  25.     ret |= MMI_initListMenuL40();    /* リストメニュー                            */
  26.     return ret ? 1 : 0;
  27. }
  28.  
  29. int
  30. GUI_DspFileList(char *userpath)
  31. {
  32.     char    *ExtStr[2] = {"*.TIF",NULL};
  33.  
  34.     unsigned int MSlctCnt = 0;    
  35.     int        ret,Atr;
  36.  
  37.     *userpath = 0;
  38.     FDG_InitFileDlg();
  39.  
  40.     FDG_SaveCurDir();
  41.     FDG_SetTitle("背景用TIF","確定","取消");
  42.  
  43.     ret = FDG_DspFileDlg
  44.         (MJ_BASEOBJ,FDG_FILEONLY | FDG_TEXT,userpath,ExtStr,&MSlctCnt);
  45.  
  46.     if(ret == 1)FDG_GetPathName(userpath,&Atr,0);
  47.  
  48.     FDG_RecovCurDir();
  49.     FDG_FreeFileDlg();
  50.     return ret;
  51. }
  52.  
  53.  
  54. int
  55. GetFileSize(char *fname)
  56. {
  57.     VECTOR    saveDta;
  58.     FMDTA    dta;
  59.  
  60.     FM_SaveDta(&saveDta);
  61.     FM_SetDta(&dta);
  62.  
  63.     if(FM_SearchFirstFile(fname,0xff))dta.size = 0;
  64.  
  65.     FM_RecovDta(&saveDta);
  66.     return dta.size;
  67. }
  68.  
  69.  
  70. int
  71. main(int argc,char *argv[])
  72. {
  73.     char    path[84],tmenutif[84];
  74.     FILE    *fp = NULL,*ofp = NULL;
  75.     char    *p = NULL;
  76.     int        fsize;
  77.     char    drv = 0;
  78.     char    *env;
  79.  
  80.     FM_SetVector() ;
  81.     if(argc > 1){                    /* ドライブ指定がある                */
  82.         drv = *argv[1];
  83.     }else{
  84.         if(NULL != (env = getenv("ICN"))){
  85.             drv = *env;
  86.         }
  87.     }
  88.  
  89.     sprintf(tmenutif,drv ? "%c:\\TMENU.TIF" : "\\TMENU.TIF",drv);
  90.  
  91.     if(MMI_Open(NULL)){                /* GUIライブラリを開ける                */
  92.         return 1;                    /* GUIの初期化。失敗はERRを返す        */
  93.     }
  94.     if(GUI_ClassInit()){            /* GUI基本部品の初期化                */
  95.         goto errout;
  96.     }
  97.     if(!GUI_DspFileList(path)){
  98.         goto errout;
  99.     }
  100.  
  101.     if(0 >= (fsize = GetFileSize(path)))goto errout;
  102.  
  103.     if(NULL == (p = TL_malloc(fsize))){
  104.         goto errout;
  105.     }
  106.     if(NULL == (fp = fopen(path,"rb"))){
  107.         goto errout;
  108.     }
  109.     if(NULL == (ofp = fopen(tmenutif,"wb"))){
  110.         goto errout;
  111.     }
  112.  
  113.     fread(p,fsize,1,fp);
  114.     fwrite(p,fsize,1,ofp);
  115.     fclose(fp);
  116.     fclose(ofp);
  117.  
  118.     TL_free(p);
  119.     MMI_Close();
  120.     FM_ResetVector() ;
  121.     return 0;
  122. errout:;
  123.     if(fp)fclose(fp);
  124.     if(ofp)fclose(ofp);
  125.     if(p)TL_free(p);
  126.     MMI_Close();
  127.     FM_ResetVector() ;
  128.     return    1;
  129. }
  130.